#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<string.h>
#include<sys/types.h>
#include<sys/wait.h>
//const char*err_string[]={
//  "sucess",
//  "error"
//};
//int add(int top)
//{
//  printf("enter add\n");
//  int sum=0;
//  int i=0;
//  for(i=0;i<=top;i++)
//    sum+=i;
// _exit(222);
//  printf("OUT add\n");
//  return sum;
//}
int main()
{
  pid_t id=fork();
  if(id==0)
  {
    //子进程
    int cnt=5;
    while(1)
    {
      printf("我是子进程,我还活着呢，我还有%ds,pid:%d,ppid:%d\n",cnt--,getpid(),getppid());
        sleep(1);
      // int *p=NULL;
      //  *p=100;
    }
    exit(0);
  }
  sleep(12);
  //父进程
  int status=0;
  pid_t ret_id=waitpid(id,&status,0);
  printf("我是父进程，等待子进程成功，pid：%d，ppid：%d，ret_id:%d,child exit code:%d,child exit signal:%d\n",getppid(),getppid(),ret_id,(status>>8)&0xFF,status&0x7F);
 // sleep(5);
//  printf("hello world");
//  sleep(2);
// _exit(107);
 // int i=0;
  //for(i=0;i<=200;i++)
  //{
   // printf("%d :%s\n",i,strerror(i));
   // exit(123);
  //}
 // int result=add(100);
 // if(result==5050)return 0;
 // else return 1;//计算结果不正常
}
